// 联合类型 | 可以连接多个类型
var b;
b = "Female";
console.log('b :>> ', b);
console.log('b :>> ', b);
// string 类型
var c = "hello";
console.log('c string :>> ', c);
// number 类型
var d = 1;
console.log('d number :>> ', d);
// boolean 类型
var e = true;
console.log('e boolean :>> ', e);
// any 类型 任何类型。
var f = true;
f = "true";
console.log('f any :>> ', f);
// unknown 类型
var g = true;
g = "true";
console.log('g unknown :>> ', g);
// void 类型
function hello() {
    console.log('hello() void :>> ');
}
console.log('void :>> ', hello());
// never 类型
function hello2() {
    throw new Error("这是一个never类型");
}
// console.log('never :>> ', hello2());
// object 类型
var t;
t = {};
t = function () { };
// {} 用于指定对象可以包含哪些属性
// 语法: {属性名:属性值,属性名:属性值}
// 在属性名后面添加 ? 表示可选
var y;
y = { name: "张三", age: 18 };
console.log('y :>> ', y);
y = { name: "李四" };
console.log('y :>> ', y);
// 如果不知道属性数量的情况下，可以使用
var u;
u = { name: "王五", age: 19 };
console.log('u :>> ', u);
u = { name: "王五", age: 19, gender: "男", adult: true };
console.log('u :>> ', u);
// 用箭头函数，设置函数结束的类型声明
// 语法: (形参1:类型1,形参2:类型2,...) => 返回值类型
var i;
i = function (n1, n2) {
    return n1 + n2;
};
console.log('i(10,20) :>> ', i(10, 20));
// 数组 声明方式，1.string[]  2.Array<string>
var a1;
a1 = ['a', 'b', 'c'];
console.log('a1 :>> ', a1);
var a2;
a2 = ['a', 'b', 'c'];
console.log('a2 :>> ', a2);
// 元组，就是固定长度的数组
var a3;
a3 = ["abc", "123", 456];
console.log('a3 :>> ', a3);
// enum 枚举
var Gender;
(function (Gender) {
    Gender[Gender["Male"] = 0] = "Male";
    Gender[Gender["Female"] = 1] = "Female";
})(Gender || (Gender = {}));
var i1;
i1 = {
    name: "张无忌",
    gender: Gender.Male
};
console.log('i1 enum :>> ', i1);
